1. Field of the Invention
The invention relates to a storage virtualization computer system. More particularly, a storage virtualization computer system that uses point-to-point serial-signal interconnect as the primary device-side IO device interconnect is disclosed.
2. Description of the Prior Art
Storage virtualization is a technology that has been used to virtualize physical storage by combining sections of physical storage devices (PSDs) into logical storage entities, herein referred to as logical media units (LMUs), that are made accessible to a host system. This technology has been used primarily in redundant arrays of independent disks (RAID) storage virtualization, which combines smaller physical storage devices into larger, fault tolerant, higher performance logical media units via RAID technology.
A Storage virtualization Controller, abbreviated SVC, is a device the primary purpose of which is to map combinations of sections of physical storage media to logical media units visible to a host system. IO requests received from the host system are parsed and interpreted and associated operations and data are translated into physical storage device IO requests. This process may be indirect with operations cached, delayed (e.g., write-back), anticipated (read-ahead), grouped, etc. to improve performance and other operational characteristics so that a host IO request may not necessarily result directly in physical storage device IO requests in a one-to-one fashion.
An External (sometimes referred to as “Stand-alone”) Storage Virtualization Controller is a Storage Virtualization Controller that connects to the host system via an IO interface and that is capable of supporting connection to devices that reside external to the host system and, in general, operates independently of the host.
One example of an external Storage Virtualization Controller is an external, or stand-alone, direct-access RAID controller. A RAID controller combines sections on one or multiple physical direct access storage devices (DASDs), the combination of which is determined by the nature of a particular RAID level, to form logical media units that are contiguously addressable by a host system to which the logical media unit is made available. A single RAID controller will typically support multiple RAID levels so that different logical media units may consist of sections of DASDs combined indifferent ways by virtue of the different RAID levels that characterize the different units.
Another example of an external Storage Virtualization Controller is a JBOD emulation controller. A JBOD, short for “Just a Bunch of Drives”, is a set of physical DASDs that connect directly to a host system via one or more a multiple-device IO device interconnect channels. DASDs that implement point-to-point IO device interconnects to connect to the host system (e.g., Parallel ATA HDDs, Serial ATA HDDs, etc.) cannot be directly combined to form a “JBOD” system as defined above for they do not allow the connection of multiple devices directly to the IO device channel. An intelligent “JBOD emulation” device can be used to emulate multiple multiple-device IO device interconnect DASDs by mapping IO requests to physical DASDs that connect to the JBOD emulation device individually via the point-to-point IO-device interconnection channels.
Another example of an external Storage Virtualization Controller is a controller for an external tape backup subsystem.
The primary function of a storage virtualization controller, abbreviated as SVC, is to manage, combine, and manipulate physical storage devices in such a way as to present them as a set of logical media units to the host. Each LMU is presented to the host as if it were a directly-connected physical storage device (PSD) of which the LMU is supposed to be the logical equivalent. In order to accomplish this, IO requests sent out by the host to be processed by the SVC that will normally generate certain behavior in an equivalent PSD also generate logically equivalent behavior on the part of the SVC in relation to the addressed logical media unit. The result is that the host “thinks” it is directly connected to and communicating with a PSD when in actuality the host is connected to a SVC that is simply emulating the behavior of the PSD of which the addressed logical media unit is the logical equivalent.
In order to achieve this behavioral emulation, the SVC maps IO requests received from the host to logically equivalent internal operations. Some of these operations can be completed without the need to directly generate any device-side IO requests to device-side PSDs. Among these are operations that are processed internally only, without ever the need to access the device-side PSDs. The operations that are initiated as a result of such IO requests will herein be termed “internally-emulated operations”.
There are operations that cannot be performed simply through internal emulation and yet may not directly result in device-side PSD accesses. Examples of such include cached operations, such as data read operations in which valid data corresponding to the media section addressed by the IO request currently happens to reside entirely in the SVC's data cache, or data write operations when the SVC's cache is operating in write-back mode so that data is written into the cache only at first, to be committed to the appropriate PSDs at a future time. Such operations will be referred to as “asynchronous device operations” (meaning that any actual IO requests to device-side PSDs that must transpire in order for the requested operation to achieve its intended goal are indirectly performed either prior or subsequent to the operation rather than directly in response to the operation).
Yet another class of operations consists of those that directly generate device-side IO requests to PSDs in order to complete. Such operations will be referred to as “synchronous device operations”.
Some host-side IO requests may map an operation that may consist of multiple sub-operations of different classes, including internally-emulated, asynchronous device and/or synchronous device operations. An example of a host-side IO request that maps to a combination of asynchronous and synchronous device operations is a data read request that addresses a section of media in the logical media unit part of whose corresponding data currently resides in cache and part of whose data does not reside in cache and therefore must be read from the PSDs. The sub-operation that takes data from the cache is an asynchronous one because the sub-operation does not directly require device-side PSD accesses to complete, however, does indirectly rely on results of previously-executed device-side PSD accesses. The sub-operation that reads data from the PSDs is a synchronous one, for it requires direct and immediate device-side PSD accesses in order to complete.
Traditionally storage virtualization has been done with Parallel SCSI, Fibre, or Parallel ATA IO device interconnects as the primary device-side IO device interconnects connecting physical storage devices to the storage virtualization controller. Both Parallel SCSI and Fibre are multiple-device IO device interconnects. Multiple-device IO device interconnects share bandwidth among all hosts and all devices interconnected by the interconnects.
Please refer to FIG. 1, which is a block diagram of a conventional storage virtualization computer system using Parallel SCSI as the primary device-side IO device interconnect. With the Parallel SCSI device-side IO device interconnect, the total bandwidth is limited to 320 MB/s per interconnect, or 1280 MB/s accumulated bandwidth for an implementation like the one diagramed in FIG. 1 with 4 Parallel SCSI device-side interconnects. Please refer to FIG. 2, FIG. 2 is a block diagram of a conventional storage virtualization computer system using Fibre FC-AL as the primary device-side IO device interconnect. With the Fibre FC-AL device-side IO device interconnect, the total bandwidth is limited to 200 MB/s per interconnect, or 800 MB/s accumulated bandwidth for an implementation like the one diagramed in FIG. 2 with 4 Fibre device-side interconnects.
Multiple-device IO device interconnects, for example Parallel SCSI, suffer from the shortcoming that a single failing device connected on the interconnect could interfere with communications and/or data transfer between hosts and other devices sharing the interconnect. Fibre FC-AL implementations have alleviated this concern to a certain extent by providing dual redundant interconnects that provide two paths to each device should one path break or become blocked for some reason (e.g., interference from another failing device). However, this is still inferior to a dedicated interconnect per storage device, for independent failures on both interconnects could still result in disabling interference concurrently on both interconnects. Dedicated interconnects, on the other hand, insure full signal integrity independence between interconnects so that a failure on one will not affect another.
Another traditional storage virtualization has been done with Parallel ATA device-side IO device interconnects, which is a point-to-point IO device interconnect using parallel signal transmission. By using point-to-point interconnects with each physical storage device having its own dedicated interconnect connecting it to the hosts, each particular physical storage device is afforded guaranteed, dedicated bandwidth such that N physical storage devices can achieve N times the bandwidth of a single interconnect.
Parallel ATA, however, suffers from the drawback that device-side IO device interconnects at most, only protect the payload data portion of information and not the control information (e.g., block address, data length, etc). In addition, Parallel ATA interconnects do not scale well beyond a certain point because of the number of dedicated signal lines (28) that must be used to form each distinct interconnect. Moreover, P-ATA, because of its parallel nature, will not be able to easily support higher interface speeds.